iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
Software Development

玩轉ABCL Lisp!用奇怪偏門的方式學習JavaFX系列 第 9 篇

lesson 0: 程式學習慣例,從HelloFX開始

  • 分享至 

  • xImage
  •  

怎麼準備JavaFX開發環境

JavaFX的Getting Started,就有關於Maven、Gradle等透過構建工具的使用JavaFX的方式。不過我希望開始學習的環境簡單,我不打算一開始就引入這些構建工具,因此直接透過下載頁面下載SDK。

在下載頁面有SDK和jmods的選項,我們暫時還不會需要打包,因此不需要jmods,但也可以先下載準備,並將解壓縮的目錄先設定成環境變數MODULE_PATH的值。

在解壓縮SDK後,將解壓縮內的lib資料夾路徑設定成環境變數SDK_PATH的值。為了方便使用,建立了一份.env檔案:

MODULE_PATH=""
SDK_PATH="<解壓縮的/lib路徑>"
CLASSPATH="${SDK_PATH}/javafx.base.jar:${SDK_PATH}/javafx.controls.jar:${SDK_PATH}/javafx.fxml.jar:${SDK_PATH}/javafx.graphics.jar:${SDK_PATH}/javafx.media.jar:${SDK_PATH}/javafx.swing.jar:${SDK_PATH}/javafx.web.jar:${SDK_PATH}/javafx-swt.jar:${SDK_PATH}/jdk.jsobject.jar:${SDK_PATH}/jfx.incubator.input.jar:${SDK_PATH}/jfx.incubator.richtext.jar:."

這樣一來就可以透過source .env配置所需的環境變數,並在使用export SDK_PATH影響後續的使用。

通常.env檔案有另外工具,可以在進入資料夾後自動套用環境變數。不過同樣為了環境簡單,並不打算引入相關工具。如果你也是使用Linux環境,可以直接將.env檔案改成export SDK_PATH=的shell script內容,這樣在用source .env時會自動將環境變數export。

另外,傳統的java參數需要明確指定jar檔案路徑,因此我另外準備了一個CLASSPATH變數記錄所有需要的jar檔案。如果你是Windows環境,需要將分隔字符改成;,並且${SDK_PATH}也需要改成實際路徑。

第一個JavaFX程式: Hello, JavaFX

使用官方提供的HelloFX做為第一支JavaFX程式。下載HelloFX.java檔案:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloFX extends Application {

    @Override
    public void start(Stage stage) {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
        Scene scene = new Scene(new StackPane(l), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

編譯HelloFX.java:javac -cp "$CLASSPATH" HelloFX.java。編譯完成後會得到HelloFX.class檔案。雖然編譯過了,不過不能同樣直接指定-cp方式執行,需要改成使用--module-path方式執行: java --module-path="${SDK_PATH}" --add-modules=javafx.controls HelloFX。

其實在編譯的時候也可以使用--module-path,這比起--class-path更簡單,不需要明確指定JAR檔案路徑,因此可以直接將SDK_PATH目錄位置提供設置。不過jmods的安全使用限制更嚴苛,需要使用--add-modules明確指定需要使用到模組:javac --module-path="${SDK_PATH}" --add-modules=javafx.controls HelloFX.java。除了javafx.controls外,還有javafx.fxml、javafx.graphics也經常會使用到。並且出現警告WARNING: Use --enable-native-access=javafx.graphics to avoid a warning for callers in this module,因此最後變成的執行命令會是:

java --enable-native-access=javafx.graphics  --module-path="${SDK_PATH}" --add-modules=javafx.controls,javafx.fxml,javafx.graphics HelloFX

執行成功後,會看到一個顯示 Java 與 JavaFX 版本資訊的視窗:

https://ithelp.ithome.com.tw/upload/images/20260922/201124707pI4Cu3gmU.png

關閉視窗後,程式會回到終端機。能完成這個流程,就代表 JavaFX 的開發環境已經可以正常使用。下一篇將保留同一個 HelloFX 例子,改從 ABCL 載入 JavaFX,並在執行時建立相同的 JavaFX 應用程式。


上一篇
lesson -7: 怎麼準備ABCL環境?Hello, ABCL
下一篇
lesson 1: Hello abclFX:參考HelloFX的簡單示例
系列文
玩轉ABCL Lisp!用奇怪偏門的方式學習JavaFX 共 13 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言